// 给定一个非空整数数组，除了某个元素只出现一次以外，其余元素均出现两次，找出那个只出现一次的元素，要求不能使用额外的存储空间

// 思路，利用异或，相同数异或结果为0， 任何数和0异或结果不变
// 时间复杂度：O(n)
// 空间复杂度：O(1)

function singleNumber(arr) {
    if (arr.length < 2) {
        return arr[0]
    }
    let ans = arr[0]
    for (let i = 1; i < arr.length; i++) {
        ans ^= arr[i]
    }
    return ans
}

let arr = [4,1,2,2,3,3,4]
console.log(singleNumber(arr));